package com.lanou3g.code0416;

import java.io.*;

/**
 * Created by dllo on 18/4/16.
 */
public class Main {
    public static void main(String[] args) {

    }

    public static void copyByBuffer(String srcPath, String desPath) {
        File srcFile = new File(srcPath);
        File desFile = new File(desPath);

        FileInputStream fis = null;
        FileOutputStream fos = null;

        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;


        try {
            desFile.createNewFile();

            fis = new FileInputStream(srcFile);
            fos = new FileOutputStream(desFile);

            // BufferedInput/ OutputStream 创建的时候需要有别的字节流
            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);

            int pos = 0;
            byte[] buf = new byte[1024];

            while ((pos = bis.read(buf)) != -1) {
                bos.write(buf, 0, pos);

            }
            // 在使用BufferedOutputStream的时候
            // 需要在最后加上一句 bos.flush();
            // 无论BOS里面的数组满没满
            // 都将里面的数据写到硬盘中
            bos.flush();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 只需要关闭 bis 和 bos
            // 会在 bis 和 bos 的close方法中
            // 自动关闭 fis 和 fos
            IOUtils.closeAll(bis, bos);
        }
    }
}
